package com.tedu.day02.oop;

/**
 * this关键字--super关键字--使用完全一致
 * 不需要继承--当前类，指代当前
 * 使用方式:调用当前类的属性，方法，构造器
 *         this.属性           【当前类的属性赋值】
 *                             出现构造器，方法中
 *                             区别当前类的属性与参数“名称”一致
 *         this.方法
 *         this()              多个有参构造器
 *         鄙视题：this和super关键字区别？
 *         this  调用本类的属性，方法，构造器
 *         super 调用父类的属性，方法，构造器，存在继承关系，使用super
 *         this()与super()：
 *         this() 是调用本类的其他构造器--构造器首行
 *         super() 是调用父类的其他构造器--子类构造器首行
 *         this()和super()不可以同时出现在对象构造器中
 */
public class This关键字 {
    int i;  //属性--很少赋值【声明未赋值】--构造器或者方法中赋值
    int j;  //属性--很少赋值【声明未赋值】--构造器或者方法中赋值

    //构造器：有参
    public This关键字(int i, int j) {
        this.i = i;
        this.j = j;
    }

    //构造器：有参          需求：创建一个对象，给i跟j赋值【跟super一样】
    public This关键字(int i) {
        this(3,4);   //调用本类其他有参构造器===传参  i=3（赋值）
        this.i = i;      //常见：   this.属性【当前类下属性】=参数 i=1（覆盖）
                         //赋值    this.i=1;
    }
    //方法--this.方法
    public void testI(){
        System.out.println("我是I");
    }
    public void testJ(){    //调取同时输出：我是I  我是J
        this.testI();
        System.out.println("我是J");
    }

    public static void main(String[] args) {
      System.out.println( new This关键字(1).i);  //属性没有输出语句
        new This关键字(1).testJ();   //方法有输出语句
    }
}
